home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 076-100 / 079 / uw / menus.c < prev    next >
C/C++ Source or Header  |  1995-03-13  |  7KB  |  247 lines

  1. /* menu function calls and handlers */
  2.  
  3. #include "term.h"
  4. #include "devices/serial.h"
  5.  
  6. /* GLOBALS ****************************************************** */
  7. extern long IntuitionBase;
  8. extern long GfxBase;
  9.  
  10. extern struct IOExtSer *SerReadReq, *SerWriteReq;
  11. extern char serin;
  12. extern int FullDuplex;
  13.  
  14. struct Menu *MenuHead;
  15.  
  16. InitMenus()
  17. {
  18.    struct Menu *CurrentMenu, *NewMenu(), *AddMenu();
  19.    struct MenuItem *CurrentItem, *SubItem,
  20.                    *AddNewMenuItem(), *AddItem(), *AddNewSubItem();
  21.  
  22.    CurrentMenu    = NewMenu("Project", 60, 10);
  23.    MenuHead       = CurrentMenu;
  24.       CurrentItem = AddNewMenuItem(CurrentMenu, "About...", 100,11);
  25.          SubItem  = AddNewSubItem(CurrentItem, "UWTerm 1.00", 92,11);
  26.          SubItem  = AddItem(SubItem,"HackerWare");
  27.       CurrentItem = AddItem(CurrentItem, "New");
  28.       CurrentItem = AddItem(CurrentItem, "Window");
  29.          SubItem  = AddNewSubItem(CurrentItem, "to Back",68,11);
  30.          SubItem  = AddItem(SubItem,"to Front");
  31.       CurrentItem = AddItem(CurrentItem, "Quit");
  32.    CurrentMenu    = AddMenu(CurrentMenu, "Settings",68,10);
  33.       CurrentItem = AddNewMenuItem(CurrentMenu,"Baud",52,11);
  34.          SubItem  = AddNewSubItem(CurrentItem, "   300   ",76,11);
  35.          if (SubItem) {
  36.             SubItem->MutualExclude = ~1;
  37.             SubItem->Flags |= CHECKIT;
  38.             }
  39.          SubItem  = AddItem(SubItem,"  1200   ");
  40.          SubItem  = AddItem(SubItem,"  2400   ");
  41.          SubItem  = AddItem(SubItem,"  4800   ");
  42.          SubItem  = AddItem(SubItem,"  9600   ");
  43.          if (SubItem) SubItem->Flags |= CHECKED;
  44.       CurrentItem = AddItem(CurrentItem,"Length");
  45.          SubItem  = AddNewSubItem(CurrentItem,"   7 bits   ",100,11);
  46.          if (SubItem) {
  47.             SubItem->MutualExclude = ~1;
  48.             SubItem->Flags |= CHECKIT;
  49.             SubItem->Flags |= CHECKED;
  50.             }
  51.          SubItem  = AddItem(SubItem,"   8 bits   ");
  52.       CurrentItem = AddItem(CurrentItem,"Duplex");
  53.          SubItem  = AddNewSubItem(CurrentItem,"   Full   ",100,11);
  54.          if (SubItem) {
  55.             SubItem->MutualExclude = ~1;
  56.             SubItem->Flags |= CHECKIT | CHECKED;
  57.             }
  58.          SubItem  = AddItem(SubItem,"   Half   ");
  59.  
  60.    if (SubItem) return(TRUE);
  61.      else return(FALSE);
  62. }
  63.  
  64. MenuSwitch(code)
  65. USHORT code;
  66. {
  67.    USHORT menunum;
  68.    struct MenuItem *item;
  69.    int error;
  70.  
  71.    error = TRUE;
  72.    while(code != MENUNULL ) {
  73.       item = (struct MenuItem *)ItemAddress(MenuHead, code);
  74.       menunum = MENUNUM( code );
  75.       switch( menunum ) {
  76.          case 0:
  77.             error &= ProjectMenu(code);
  78.             break;
  79.          case 1:
  80.             error &= SettingsMenu(code);
  81.             break;
  82.       } /* end of switch ( menunum ) */
  83.       code = item->NextSelect;
  84.    } /* end of while (code != MENUNULL) */
  85.    return(error);
  86. } /* end of MenuSwitch */
  87.  
  88.  
  89. ProjectMenu(code)
  90. USHORT code;
  91. {
  92.    USHORT itemnum;
  93.    itemnum = ITEMNUM( code );
  94.    switch( itemnum ) {
  95.       case 0:  /* About */
  96.          return(AboutMenu(code));
  97.          break;
  98.       case 1:  /* New */
  99.      MkNewWin();
  100.      return(TRUE);
  101.      break;
  102.       case 2:  /* Window */
  103.          return(ArrangeMenu(code));
  104.          break;
  105.       case 3: /* Quit */
  106.          return( FALSE );
  107.          break;
  108.    } /* end of switch ( itemnum ) */
  109.    return( TRUE );
  110. } /* end of ProjectMenu */
  111.  
  112. AboutMenu(code)
  113. USHORT code;
  114. {
  115.    struct IntuiText *InfoText, *NewIText(), *AddIText();
  116.    USHORT subitem;
  117.    subitem = SUBNUM( code );
  118.    switch( subitem ) {
  119.       case 0:
  120.          InfoText = NewIText( "Unix Windows pcl1 !Beta!",12,5);
  121.          AddIText(
  122.          AddIText(
  123.          AddIText(
  124.          AddIText(InfoText,   "       Copyright ) 1987"),
  125.                               "      by Michael McInerny"),
  126.                               "       140 Spruce Ave"),
  127.                               "      Rochester, NY  14611");
  128.          autorequest(uw[uw_write].win, InfoText, FALSE, 276, 70);
  129.          DisposeIText(InfoText);
  130.          break;
  131.       case 1:
  132.          InfoText = NewIText( " Hackerware - Software for the People",12,5);
  133.          AddIText(
  134.          AddIText(
  135.          AddIText(
  136.          AddIText(
  137.          AddIText(
  138.          AddIText(InfoText,   " Feel free to use this software and"),
  139.                               "  source--just don't sell it. "),
  140.                               "Please distribute source with binary."),
  141.                               "If you like this program, please send"),
  142.                               "whatever you think it's worth to the"),
  143.                               "     author.  Thank-you!");
  144.          autorequest(uw[uw_write].win, InfoText, FALSE, 330, 108);
  145.          DisposeIText(InfoText);
  146.          break;
  147.    } /* end of switch ( subitem ) */
  148.    return( TRUE );
  149. } /* end of AboutMenu */
  150.  
  151. ArrangeMenu(code)
  152. USHORT code;
  153. {
  154.    USHORT subitem;
  155.    subitem = SUBNUM( code );
  156.    switch( subitem ) {
  157.       case 0:
  158.          WindowToBack( uw[uw_read].win );
  159.          break;
  160.       case 1:
  161.          WindowToFront( uw[uw_read].win );
  162.          break;
  163.    } /* end of switch ( subitem ) */
  164.    return( TRUE );
  165. } /* end of ArrangeMenu */
  166.  
  167.  
  168. SettingsMenu(code)
  169. USHORT code;
  170. {
  171.    USHORT itemnum;
  172.    itemnum = ITEMNUM( code );
  173.    AbortIO(SerReadReq);
  174.    switch ( itemnum ) {
  175.       case 0:
  176.          BaudMenu(code);
  177.          break;
  178.       case 1:
  179.          LengthMenu(code);
  180.          break;
  181.       case 2:
  182.          DuplexMenu(code);
  183.          break;
  184.    } /* end of switch ( itemnum ) */
  185.    SerReadReq->IOSer.io_Command = SDCMD_SETPARAMS;
  186.    DoIO(SerReadReq);
  187.    QueueSerRead(SerReadReq, &serin);
  188.    return( TRUE );
  189. } /* end of SettingsMenu */
  190.  
  191. BaudMenu(code)
  192. USHORT code;
  193. {
  194.    USHORT subitem;
  195.    subitem = SUBNUM( code );
  196.    switch( subitem ) {
  197.       case 0:
  198.          SerReadReq->io_Baud = 300;
  199.          break;
  200.       case 1:
  201.          SerReadReq->io_Baud = 1200;
  202.          break;
  203.       case 2:
  204.          SerReadReq->io_Baud = 2400;
  205.          break;
  206.       case 3:
  207.          SerReadReq->io_Baud = 4800;
  208.          break;
  209.       case 4:
  210.          SerReadReq->io_Baud = 9600;
  211.          break;
  212.    } /* end of switch ( subitem ) */
  213. } /* end of BaudMenu */
  214.  
  215. LengthMenu(code)
  216. USHORT code;
  217. {
  218.    USHORT subitem;
  219.    subitem = SUBNUM( code );
  220.    switch( subitem ) {
  221.       case 0:
  222.          SerReadReq->io_ReadLen = 0x07;
  223.          SerReadReq->io_WriteLen = 0x07;
  224.          break;
  225.       case 1:
  226.          SerReadReq->io_ReadLen = 0x08;
  227.          SerReadReq->io_WriteLen = 0x08;
  228.          break;
  229.    } /* end of switch ( subitem ) */
  230. } /* end of LengthMenu */
  231.  
  232. DuplexMenu(code)
  233. USHORT code;
  234. {
  235.    USHORT subitem;
  236.    subitem = SUBNUM( code );
  237.    switch( subitem ) {
  238.       case 0:
  239.          FullDuplex = TRUE;
  240.          break;
  241.       case 1:
  242.          FullDuplex = FALSE;
  243.          break;
  244.    } /* end of switch ( subitem ) */
  245. } /* end of DuplexMenu */
  246.  
  247.